<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
     function checkType(obj) {
            return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
        }

        //手写深拷贝
        function deepClone(obj) {
            //先做一个判断 判断拷贝是数组还是对象还是其他类型
            if (checkType(obj) === "object") {
                //如果是对象，则新创建一个对象类型
                var o = {};
            } else if (checkType(obj) === "array") {
                //如果是数组，则新创建一个数组类型
                var o = [];
            } else {
                //如果不是对象或者数组，则直接返回这个值
                return obj;
            }

            for (var key in obj) {
                o[key] = deepClone(obj[key]);
            }

            return o;
        }
        // var obj1 = {
        //     name: "张三",
        //     age: 20,
        //     hobby: {
        //         name1: "篮球",
        //         name2: "足球"
        //     }
        // }
        let obj = {
            name: '张三',
            project: {
                name: '数学',
                kind: {
                    'name1': '高等数学',
                    'name2': '线性代数'
                }
            }
        }
        var obj2 = deepClone(obj);
        console.log(obj2);
</script>
</html>